package com.mall.service;

import com.mall.controller.vo.UserVO;
import com.mall.entity.User;
import org.springframework.security.core.userdetails.UserDetailsService;

import javax.servlet.http.HttpServletRequest;

public interface UserService extends UserDetailsService {

    /**
     * 根据邮箱获取email  , 在数据库中email是唯一的
     * @param email
     * @return
     */
    User getUserByEmail(String email);

    /**
     * 添加用户
     * @param user
     * @return
     */
    int addUser(User user);

    /**
     * 发送邮箱验证码
     */
    void sendMail(String mail, String key);

    /**
     * 根据userId获取用户信息
     * @param userId
     * @return
     */
    User getUserById(Integer userId);

    /**
     * 获取部分用户数据
     * @param currentUserId
     * @return
     */
    UserVO getUserVoById(Integer currentUserId);

    /**
     * 修改用户信息
     * @param user
     * @return
     */
    int modifyUserInfo(User user);

    /**
     * 用户修改密码时 , 先验证输入自己的邮箱是否正确
     * @param mail
     * @return
     */
    boolean verifyMail(String mail,HttpServletRequest request);

    int modifyUserPasswordByMail(String mail,String password);
}
